###########################################
###### make/make test: make test program
###### make ar: archive program
###### make app: make jkmain program with archive
######  Author: jmdvirus
###########################################

EXEC=jkdemo

CC=gcc
CPP=g++
CLANG=clang

#CXX=$(CLANG)
CXX=$(CC)
FLAGS=

INCLUDE=-Iinclude
LIBDIR=
LIBS=

LIBMAINNAME=jkfunc
LIBFULLNAME=lib$(LIBMAINNAME).a
MAINFILE=jkmain.c

COMPILE=$(CXX) $(FLAGS) $(INCLUDE) $(LIBDIR) $(LIBS)

ifndef V
	Q=@
endif

OBJS_y += jkstring.o jkfunc.o jkutils.o jksocket.o

OBJDIR=src/.obj
OBJS=$(OBJS_y:%=$(OBJDIR)/%)

all: app $(OBJS) 

#############################
##### ar
#############################
$(OBJDIR)/%.o:src/%.c
	$(Q) echo "\t $(CXX)\t\t \033[1;32m  $^ \033[0m"
	$(Q) $(COMPILE) -c -o $@ $^

ar: objdir $(OBJS)
	$(Q) echo "\t Archive \t\t \033[1;31m  $(LIBFULLNAME) \033[0m"
	$(Q) ar -r $(LIBFULLNAME) $(OBJS)

app: ar
	$(Q) echo "\t Generate \t\t \033[1;31m $(EXEC) \033[0m"
	$(Q) $(CXX) $(FLAGS) $(INCLUDE) -o $(EXEC) $(MAINFILE) -L. -l$(LIBMAINNAME)


#############################
##### ready
#############################
objdir:
	@if [ "$(OBJDIR)" != "" ] ;then \
	    mkdir -p $(OBJDIR);         \
	fi


###############################
######## test program
###############################
test:
	$(Q) echo "\t $(CXX)\t\t \033[1;32m jkstring.c jk_string_test.c --> jk_string_test\033[0m"
	$(Q) $(COMPILE) -o jk_string_test jkstring.c jk_string_test.c


##########################
### remove
##########################
clean: 
	$(Q) echo "\t clean \t \033[1;31m  $(OBJDIR) $(LIBFULLNAME)  $(EXEC) \033[0m"
	$(Q) rm $(OBJDIR) $(LIBFULLNAME)  $(EXEC) -rf

